// 函数模板
#include <iostream>
using namespace std;
// 函数模板
template <typename T>
void mySwap(T &a, T &b)
{
    T temp = a;
    a = b;
    b = temp;
}
// 模板必须确定出T具体类型才可使用
template <class T>  // 此处typename用class也可以
void func()
{
    cout << "call func" << endl;
}
void test1()
{
    int a = 3;
    int b = 7;
    // 1.自动类型推导
    mySwap(a, b);
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;
    // 2.显式指定类型
    mySwap<int>(a, b);
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;
}
void test2()
{
    func<int>(); // 必须手动指明T类型
}
int main(void)
{
    test1();
    test2();

    return 0;
}